home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / msdos / fractal / moe / moe.doc < prev    next >
Text File  |  1993-07-31  |  11KB  |  206 lines

  1.                      Moe: Mandelbrot Orbital Exploration
  2.                      ===================================
  3.                             (C) 1993 Brian Boese
  4.                              All Rights Reserved
  5.  
  6. Moe is freeware.  Distribute it freely.  I only ask that you try it out for a
  7. little while, and then send a postcard telling me what you think of it.  See
  8. "Registration" below for more details.
  9.  
  10. Requirements:  IBM PC or Compatible
  11.                DOS 3.3 or higher
  12.                EGA, VGA, or SuperVGA video card
  13. Recommended:   Mouse
  14.                Math co-processor
  15.  
  16. Included in this archive:
  17.     moe.exe      moe.doc      moe.cfg      mand.pic
  18.     8rain.map    basic.map    bluein.map   blues.map
  19.     default.map  gamma2.map   goodega.map  greenin.map
  20.     neon.map     redin.map    volcano.map
  21.  
  22. Also included in the registered version:  (the complete source code)
  23.     egavga.obj   moe.pas      mouselib.pas mouselib.tpu
  24.     mouslib8.zip svga256m.obj svgabg40.zip
  25.  
  26. This program was inspired in part by the wonderful program by those people in
  27. the Stone Soup group, FractInt.  I wanted a simpler way to view the orbitals
  28. of points chosen from inside or outside the Mandelbrot set.  I looked at the
  29. program Forb, but it wasn't quite sophisticated enough for what I wanted to
  30. do, and so here is Moe.
  31.  
  32. For those people not already fractally inclined, the Mandelbrot set is more
  33. than a nifty design on a T-shirt.  It is a mathematically defined object
  34. which shows how chaotic behaviour can arise from very simple rules.  The
  35. rules for the Mandelbrot set are as follows:
  36.  
  37.         Any point 'c' in the complex plane is either in the Mandelbrot
  38.         set or not.  Start with z=0, and then iterate the function
  39.         "z becomes z*z + c" for a while.  If z manages to go beyond a
  40.         certain boundary, then the initial point c was not in the set.
  41.         Otherwise the point c _might_ be in the Mandelbrot set.
  42.  
  43. The complex plane is just a two-dimensional 'set' of numbers, which you can
  44. imagine correspond to physical points on your monitor.  A complex number
  45. looks like 'a + bi', where both a and b are real numbers, and i is the square
  46. root of -1.  In other words, i times i is -1.
  47.  
  48. Don't worry if you don't really understand this little bit of math...  I know
  49. it might look a little strange.  (After all, your teachers probably always
  50. told you that negative numbers don't have roots.  And then again, your pocket
  51. calculator will just show a big E instead of an answer.)  But when numbers
  52. are defined in this way, magic can happen!  All the ingredients are there for
  53. the highly complex Mandelbrot set.
  54.  
  55. Notice that in the definition of the Mandelbrot set above it only tells you
  56. if the point c is _not_ in the set.  You might think that by a simple process
  57. of elimination you will eventually get the exact set.  This is _almost_ true.
  58. Sometimes an orbit will move into a periodic cycle (the values for z keep
  59. repeating over and over), in which case that orbit will not diverge, which
  60. means that it must therefore be part of the Mandelbrot set.
  61.  
  62. The problem here is that it can take a _long_ time before a cycle emerges
  63. from the orbit.  The Mandelbrot set picture shown by Moe was generated by a
  64. program I wrote using high-precision math, for about 1,000,000 iterations
  65. worth for each pixel.  The pixels shown in black are part of the Mandelbrot
  66. set and the rest are not, or at least on the most part they are.  About a
  67. dozen of the pixels shown in black were not able to converge to a cycle
  68. within the memory of my computer, plus most of the points on the line to the
  69. left of the set.  If you have a binary file viewer, you can tell the
  70. difference:  Each byte in the file corresponds to a point on the 480x480
  71. Mandelbrot picture.  Points which converged to a cycle have a value of 255
  72. (or $FF), points which have diverged have a value in the range from 1 to 254
  73. (or $01 to $FE), and all points which neither converged nor diverged have a
  74. value of 0.
  75.  
  76. Moe will let you explore one entrancing property of the Mandelbrot set, its
  77. orbitals.  Choose the point c from anywhere on the screen, and all of the z
  78. values will be animated for you.  (At least until the orbits start to diverge
  79. or converge, or you get a little bored and abort.)
  80.  
  81. Moe currently requires that you have an EGA, VGA, or SVGA adapter installed.
  82. If you happen to have some other card, you will have to find another machine
  83. with one installed to run Moe properly.  (Try a friend's house, school, or
  84. work.)  If you don't like this, send me a postcard complaining (see
  85. Registration below).  Enough postcards and I might eventually add in a new
  86. video mode.
  87.  
  88. While the program is running, you have several controls at your disposal:
  89.  
  90.       Mouse:             Move the cursor to any point on the screen
  91.       Cursor Keys:       Move the cursor by one pixel in that direction
  92.       Page Up/Down:      Move the cursor 5 pixels up or down
  93.       Home/End:          Move the cursor 5 pixels left or right
  94.       'x', 'y':          Set the x- or y-coordinate explicitly
  95.   (*) '1' through '8':   Change the x-offset value at that digit
  96.   (*) '!' through '*':   Change the y-offset value at that digit
  97.   (*) '0':               Clear the x-offset
  98.   (*) ')':               Clear the y-offset
  99.       'c':               Load in a different color map
  100.       'z':               zoom in to examine an orbital more closely
  101.       'p':               change the number of passes for redrawing
  102.       's':               toggle sound on and off
  103.       'e':               toggle orbital erasing on and off
  104.       'm':               unzoom back to the original Mandelbrot screen
  105.       'r':               redraw the current screen
  106.       'q'/Escape:        End the Program
  107.       Left Mouse Click:  Select that pixel for starting the orbital
  108.       Any other key:     Same as Left Mouse Click
  109.  
  110. (*) These keys are actually user-definable via the command-line or the
  111.     moe.cfg file.  See below for the correct syntax.  Changing tbe values of
  112.     the x- or y-offset allows you to pick the starting point from anywhere
  113.     within the current pixel.  This can be especially useful if you wish to
  114.     explore various orbitals which start from extremely close starting
  115.     positions.  Note that these keys are 1-8,0 and shifted 1-8,0 on the
  116.     American keyboard.
  117.  
  118. The Escape key can also be used to abort an operation in progress.  For
  119. example, when you are entering an exact value for the starting position,
  120. choosing a place to zoom, or drawing a zoomed screen, you can push the Escape
  121. key to cancel.  When drawing the screen, though, it doesn't really abort.  It
  122. just temporarily sets the number of passes to zero to speed up the redraws.
  123.  
  124. Syntax:    moe [option...]
  125. options:   maxiter=n      n is the number of orbitals shown
  126.                           3 <= n <= 3000
  127.                           default is 3000
  128.            erase=yes/no   erase old orbitals?
  129.                           default is yes
  130.            map=filename   the name of the color map file to use
  131.                           default is "default.map"
  132.            xkey=xxxxxxxxx the 9 keys to use for adjusting the x-offset
  133.                           default is "123456780"
  134.            ykey=yyyyyyyyy the 9 keys to use for adjusting the y-offset
  135.                           default is "!@#$%^&*)"  (American keyboard)
  136.            xoff=n         the initial x-offset (as an integer)
  137.                           0 <= n < 62500000
  138.                           default is 0
  139.            yoff=n         the initial y-offset (as an integer)
  140.                           0 <= n < 62500000
  141.                           default is 0
  142.            x=n            the first x-coordinate to use
  143.                           -2.0 <= n < 1.0
  144.                           default is 0.0
  145.            y=n            the first y-coordinate to use
  146.                           -1.5 <= n < 1.5
  147.                           default is 0.0
  148.            sound=yes/no   whether or not you want to hear the beeps
  149.                           default is yes
  150.            passes=n       how many passes you want when zooming
  151.                           n must be 1, 2, or 3
  152.            video=mode     which type of adapter you want Moe to use
  153.                           currently supported are EGA, VGA, and SVGA
  154.                           default is VGA
  155.  
  156. These options may also be given in the moe.cfg file.  Any options given on
  157. the command line override those in the configuration file.  If no moe.cfg
  158. file exists, it will create one with the default settings.
  159.  
  160. You can create or modify the moe.cfg file to conform to your favorite
  161. options.  For example, if you have a preferred color map or if your keyboard
  162. does not conform to the default American keyboard, you can set it up to
  163. automatically use your preferences.
  164.  
  165. If you are familiar with the excellent program FractInt, you may have a
  166. favorite color map from there.  Moe will allow you to use that color map
  167. just by telling it to at startup.  Included with Moe are several of my
  168. favorite color maps.  They look best in SVGA mode, but 8rain, default, and
  169. goodega look good on a VGA screen.
  170.  
  171. Note: If you need to conserve disk space, or if you only have an EGA card,
  172.       then you can delete the file MAND.PIC.  If the file is not present, or
  173.       if you are using an EGA adapter, then Moe will calculate the Mandelbrot
  174.       picture on the fly.  The reason for not using this file if you have an
  175.       EGA adapter is that the EGA's maximum mode is 640x350, but the picture
  176.       was generated at 640x480.
  177.  
  178.                                 Registration
  179.                                 ============
  180.  
  181. If you use Moe, please send a postcard to the following address:
  182.  
  183.         Brian Boese
  184.         20 Ormonde Avenue
  185.         St. Catharines, Ontario
  186.         Canada
  187.         L2M 5P2
  188.  
  189. This is mostly so that I can know approximately how many people are using my
  190. program, so I can know whether it would be worth my while to make major/minor
  191. improvements to Moe.  But if nobody is using my program then what would be
  192. the point?  This can also be a source of information and comments about Moe
  193. for myself.  What do you like about Moe?  What would you like to see
  194. improved?  Added?  Removed?  What do you hate?  Without your comments I can
  195. only write programs the way I see fit, and you know how programmers can get...
  196.  
  197. If you like using Moe, or if you find it to provide useful information, then
  198. I ask that you send a small donation of $5.00 to the above address.  This
  199. program is not FreeWare, but it is freely distributable in an unmodified
  200. form.  (I figure I'm going to get a lot more postcards than checks.)  This is
  201. more or less just a token sum, and I don't think it is too unreasonable.
  202.  
  203. If you send $10.00, a disk, and a self-addressed-stamped-envelope, then I
  204. will be happy to send you a copy of the program complete with full source
  205. code.  This will be the most-up-to-date version of the program, of course.
  206.